<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box{
            width: 100px;
            height: 100px;
            background: yellow;
            position: absolute;
        }
    </style>
</head>
<body>
    <button>前进</button>
    <button>后退</button>
    <div class="box"></div>
    <script>
        let oBtns=document.querySelectorAll("button");
        let oBox=document.querySelector(".box");
        // 封装动画
        function fn(o,target){
            // 1.清空上一个定时器
            clearInterval(o.timer);
            // 2.开启一个新的定时器 
            o.timer=setInterval(()=>{
                // 3.计算步长
                let step=target>o.offsetLeft?10:-10;
                // 4.设置新的位置
                o.style.left=o.offsetLeft+step+"px";
                // 5.判断剩余的路
                if(Math.abs(target-o.offsetLeft)<=Math.abs(step)){
                    clearInterval(o.timer);
                    // 6.没到指定位置手动设置
                    o.style.left=target+"px";
                }
            },50)
        }

        // 绑定事件
        oBtns[0].addEventListener("click",()=>{
            fn(oBox,400);
        })
        oBtns[1].addEventListener("click",()=>{
            fn(oBox,5);
        })
    </script>
</body>
</html>